ESP_12F.ino
#include "ESP_12F.h"
void ESP_12F_struct_Init(ESP_12f_t* Modul)
{
Modul->rst_pin = 17; // Arduino Nano pin D2
pinMode(Modul->rst_pin, OUTPUT);
digitalWrite(Modul->rst_pin, HIGH);
Modul->rst_delay = 100;
Modul->response_wait_delay = 100;
Modul->max_delays_amount = 100;
Modul->max_reset_tries = 3;
}
bool ESP_12F_Connect(ESP_12f_t* Modul, status_flags_t* Status)
{
Serial.println("Connecting to ESP-01");
uint8_t delays_counter = 0;
uint8_t reset_tries = 0;
uint8_t i = 0;
char Line[6];
Serial.println("ESP_01 conecting routine");
while((Status->ESP_01_connected == 0) && (reset_tries < Modul->max_reset_tries)) // if both ESP is not connected and timeout hasn't been reached
{
//Serial.println("Here");
Serial1.println("alive?");
delay(Modul->response_wait_delay);
delays_counter++;
if(Serial1.available())
{
//Serial.println("data from esp received");
while(Serial1.available())
{
Line[i] = Serial1.read();
//Serial.println(Line[i]);
if(Line[i] == '\n')
{
Line[i-1] = '\0';
if(strcmp(Line, "YES") == 0)
{
Status->ESP_01_connected = 1;
}
else Status->ESP_01_connected = 0;
i = 0;
}
else
i++;
}
}
if(delays_counter >= Modul->max_delays_amount) // if we wait more then [delays_counter*(Modul->max_delays_amount)/1000] seconds
{
Serial.println("Resetting the Modul");
delays_counter = 0;
reset_tries++;
digitalWrite(Modul->rst_pin, LOW);
delay(Modul->rst_delay);
digitalWrite(Modul->rst_pin, HIGH);
}
}
}
/*
* Sending of the infos of current states of the traffic lights to ESP-12F Modul
*/
void Send_Apel_State(ampel_t* Ampel)
{
String Line = "post";
for(uint8_t i = 0; i < 5; i++)
{
switch(Ampel->ein_ampel[i].future_state)
{
case GRUN: {Line = Line + "1";} break;
case ROT: {Line = Line + "0";} break;
}
}
Serial1.println(Line);
Serial.println("Send Line: " + (String)Line);
}